import Vue from 'vue'
import App from './App.vue'
//全局组件:三级联动组件、轮播图、分页器
import TypeNav from '@/components/TypeNav'
import Carsousel from '@/components/Carsousel'
import Pagination from '@/components/Pagination'
//按需引入element组件库
import { Button, MessageBox } from 'element-ui'
//第一个参数:全局组件的名字 第二个参数:哪一个组件
Vue.component(TypeNav.name, TypeNav)
Vue.component(Carsousel.name, Carsousel)
Vue.component(Pagination.name, Pagination)
//注册element组件
Vue.component(Button.name, Button)
//注册element组件，这组件主要用来做方法使用的，不用注册，用里面暴露的方法就行了
Vue.prototype.$msgbox = MessageBox
Vue.prototype.$alert = MessageBox.alert
//引入路由
import router from '@/router'
//引入仓库
import store from '@/store'
// 测试发送重写axios，这里首先要去vue.config.js解决跨域
// import {reqCategoryList} from "@/api"
// reqCategoryList();

// 引入MockServe.js，mock数据
import "@/mock/mockServe"
//引入swiper的样式
import 'swiper/css/swiper.css'

//统一接口的api文件里面全部请求函数，主要是学习一下另一种请求ajax的处理方法
//统一引入
import * as API from '@/api'

//图片懒加载插件
import VueLazyload from 'vue-lazyload'
//官方的引入
// const loadimage = require('./assets/loading.gif')
import handsome from '@/assets/handsome.gif'
Vue.use(VueLazyload, {
  //加载时间,一般不用加
  throttleWait:500,
  //懒加载默认的图片
  loading: handsome,
});

//引入表单校验插件,引入让它执行就行
import "@/plugins/validate";


Vue.config.productionTip = false;

new Vue({
  render: h => h(App),
  //注册路由
  //组件身上拥有了$route、$router属性
  router,
  //注册仓库：组件实例身上拥有一个$store属性
  store,
  // 全局总线，为了search与header组件兄弟间的通信，进行清除搜索框的
  // 拥有一个vm，但是是什么配置都还没有的vm
  beforeCreate() {
    Vue.prototype.$bus = this;
    // 给vm的原型添加$API对象
    //不用每次使用ajax接口的时候，在组件代码上引用文件
    Vue.prototype.$API = API;
  },
}).$mount('#app')
